実装で得た経験 | ScrapboxでVim key bindingsを作ろうと試行錯誤してる話
責務の分離を考えられるようになった
意識して考えられるようになったというより、動けばいいの精神で作ったコードをせっせこrefactoringしていたら自然とそうなったといったほうがいいかもしれません。
途中から似たようなコードの繰り返しに気づくので、そのへんをAPIとして切り出す
複数の機能が混ざっていると取り回しがしづらくなる
このへんで、分離したほうが良いことに気づく
重要ですが最初は気にしないほうがいいです。というか気づきません
意識して責務の分離を考えるのとするのではなく、適当に書いてて辛くなった部分が出てきたときに単一責任の原則にそうようコードを組み直すのがポイントかな
何にも具体的なコードがない状態でSOLID原則とか言われてもいまいちピンときません。 とりあえず動くものを作ることを目標に書いていくと、似たようなコードがいろんなところにばらまかれたり、複雑に関数が絡み合って単独でテストできないような状況が発生します。今回も発生しましたね
注意点ですが、これはprogramを学ぶ上での話です。productionに適用したら大変なことになると思われるのであしからず。
やっていくうちに、具体的なコマンドをVim emulatorから独立させるとか、どんどん良いアイデアが生まれた
とにかく動くものを作って捨てる
今回は一部を除いて、vim key bindを実現する手段から
prototypingの段階なら動く事しか考えないので簡単です
APIを整える、つまり足回りを整える段階でなら気にしなくても良いのでは?
vim拡張機能を作るとvim commandに詳しくなれる
Vimの挙動を細かく確認して、それを再現する必要がある
自ずとvim commandに詳しくなれる